const commonUtils = require('../common/commonUtils');
const {request, showTip, getCurrentUserInfo} = require("../common/request");

//动态计算当前页面的可滚动的高度
function getScrollHeight(){
    // 计算滚动区域的高度：屏幕高度 - 导航栏高度 - 底部安全区域高度
    return  wx.getSystemInfoSync().windowHeight - 250;
}

//初始化日期数组
function getCourseDateInfos(_this) {
    //前端进行拼接近期7天的数据（从当天往后7天，含当天）
    let startDate = null;
    if(_this.data.startDate){
        startDate = _this.data.startDate;
    }else{
        startDate = new Date();
        _this.data.startDate = startDate;
    }
    //再现有基础上再追加7个日期
    const newCourseDateInfos = [];//设置一个临时存储日期数组的变量
    for(let i=0;i<7;i++){
        let newDate = commonUtils.addDays(startDate,i);
        const newCourse = {
            "index": i+1,
            "isSelected": (i === 0),
            "courseWeek": commonUtils.getChineseWeekday(newDate),
            "courseDate": newDate.substring(5),
            "courseAllDate": newDate
        };
        newCourseDateInfos.push(newCourse);
    }
    // 使用 setData 更新所有状态
    _this.setData({
        courseDateInfos:newCourseDateInfos
    });
    //重新根据选中的日期进行加载课程列表
    getCourseList(_this,startDate);
}

//初始化数据
function initInfo(_this) {
    getCourseDateInfos(_this);//初始化日期数组
    initGymInfo(_this);
}

// pages/yueke/yueke.js
Page({
    data: {
        scrollHeight:getScrollHeight(),
        courseList:{},//课程列表
        courseDateInfos:[],//日期选择器的数据
        startDate:null,
        gymInfo:null//瑜伽馆信息
    },
    onLoad(options) {
        initInfo(this);
    },
    // 下拉刷新触发时执行
    onPullDownRefresh() {
        wx.showLoading({ title: '刷新中...' });
        initInfo(this);
        wx.stopPullDownRefresh();// 停止刷新动画
        wx.hideLoading();
    },
    //选择日期时触发
    changeDate: function (e) {
        //一进来首先设置星期（只显示7天）
        let index = e.currentTarget.dataset.index;
        console.log("index:"+index);
        const newCourseDateInfos = [];//设置一个临时存储日期数组的变量
        let selectedDate =  "";//选中的日期
        // 遍历所有可能的状态键
        for (let i = 0; i < this.data.courseDateInfos.length; i++) {
            const item = this.data.courseDateInfos[i];
            if(item.index === index) {
                item.isSelected = true;
                selectedDate = item.courseAllDate;
            } else {
                item.isSelected = false;
            }
            newCourseDateInfos.push(item);
        }
        // 使用 setData 更新所有状态
        this.setData({
            courseDateInfos:newCourseDateInfos
        });
        //重新根据选中的日期进行加载课程列表
        getCourseList(this,selectedDate);
    },
    //点击开始重新加载左侧的日期数组
    goLeftCourseDates:function (e){
        let courseDateInfo = this.data.courseDateInfos[0];
        let nowFirstDate = courseDateInfo.courseAllDate;
        //如果第一个日期和当前日期一致，不允许再往前翻页
        if(!commonUtils.compareDateIsLowCurrentDate(nowFirstDate)){
            //在现有基础上再减少7个日期
            const newCourseDateInfos = [];//设置一个临时存储日期数组的变量
            for(let i=0;i<7;i++){
                let newDate = commonUtils.addDays(nowFirstDate,-(7-i));
                const newCourse = {
                    "index": i+1,
                    "isSelected": (i === 0),
                    "courseWeek": commonUtils.getChineseWeekday(newDate),
                    "courseDate": newDate.substring(5),
                    "courseAllDate": newDate
                };
                newCourseDateInfos.push(newCourse);
            }
            // 使用 setData 更新所有状态
            this.setData({
                courseDateInfos:newCourseDateInfos
            });
            //重新根据选中的日期进行加载课程列表
            this.data.startDate = commonUtils.addDays(nowFirstDate,-7);
            getCourseList(this,commonUtils.addDays(nowFirstDate,-7));
        }else{
            wx.showToast({
                title: '已到最前日期，无法再加载！',
                icon: 'none',
                duration: 1000, // 1 秒（单位：毫秒）
            });
        }
    },
    //点击开始重新加载右侧的日期数组
    goRightCourseDates:function (e){
        let courseDateInfo = this.data.courseDateInfos[this.data.courseDateInfos.length-1];
        let nowLastDate = courseDateInfo.courseAllDate;
        //再现有基础上再追加7个日期
        const newCourseDateInfos = [];//设置一个临时存储日期数组的变量
        for(let i=0;i<7;i++){
            let newDate = commonUtils.addDays(nowLastDate,(i+1));
            const newCourse = {
                "index": i+1,
                "isSelected": (i === 0),
                "courseWeek": commonUtils.getChineseWeekday(newDate),
                "courseDate": newDate.substring(5),
                "courseAllDate": newDate
            };
            newCourseDateInfos.push(newCourse);
        }
        // 使用 setData 更新所有状态
        this.setData({
            courseDateInfos:newCourseDateInfos
        });
        //重新根据选中的日期进行加载课程列表
        this.data.startDate = commonUtils.addDays(nowLastDate,1);
        getCourseList(this,commonUtils.addDays(nowLastDate,1));
    },
    //预约
    goPoint:function(e){
        const that = this;
        const id = e.currentTarget.dataset.id
        const userInfo = getCurrentUserInfo();
        //弹窗提示是否确认预约
        wx.showModal({
            title: '确认提醒',
            content: '是否确认执行该操作？',
            confirmText: '是',
            cancelText: '否',
            success: (res) => {
                if (res.confirm) {
                    // 点击确认按钮后的处理逻辑
                    request({
                        url:'/yoga_business/wechat/coursePlanPoint/point',
                        method:'POST',
                        data:{
                            "openId":userInfo.openId,
                            "coursePlanId":id
                        },
                        success(res) {
                            if(res.success){
                                initInfo(that);
                            }else{
                                showTip();
                            }
                        },
                        fail(msg) {
                            showTip();
                        }
                    });
                }
            }
        });
    },
    goMyPointList:function(){
        wx.navigateTo({
            url: '/pages/yueke/yueke_mine',
        });
    }
})

/**
 * 获取课程日期
 * @param _this
 * @param courseAllDate 课程日期全格式
 */
const getCourseList = (_this,courseAllDate) => {
    console.log("开始加载日期"+courseAllDate+"的课程列表");
    const userInfo = getCurrentUserInfo();
    request({
        url:'/yoga_business/wechat/coursePlan/list',
        method:'POST',
        data:{
            "courseStartDate": courseAllDate,
            "openId":userInfo.openId
        },
        success(res) {
            if(res.success){
                if(res.content){
                    _this.setData({courseList:res.content});
                }else{
                    _this.setData({courseList:null});
                }
            }else{
                showTip();
            }

        },
        fail(msg) {
            showTip();
        }
    });
};

//初始化瑜伽馆信息
function initGymInfo(_this) {
    request({
        url:'/yoga_business/wechat/sysGym/getSysGymInfo',
        method:'GET',
        data:null,
        success(res) {
            _this.setData({
                gymInfo:res.content
            })
        },
        fail(msg) {
            console.log('POST请求失败', msg);
        }
    });
}